﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sociedad.BL;
using Sociedad.DAL;

public partial class SOA_RegistroSOA_LegajoRegistrar : System.Web.UI.Page
{
    SociedadBL blSociedad = new SociedadBL();
    SolicitudInscripcionBL blSolicitudIns = new SolicitudInscripcionBL();
    UbigeoBL blUbigeo = new UbigeoBL();
    Util util = new Util();
    ParametroBL blParam = new ParametroBL();
    Soa_Sociedad_Registro beReg = new Soa_Sociedad_Registro();
    Wfs_SeguimientoDocumento beDocWF = new Wfs_SeguimientoDocumento();
    WfDocumentoBL blDocWF = new WfDocumentoBL();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            try
            {
                Inicializar_Datos();
            }
            catch (Exception ex)
            {
                lblMsj.Text = "Se produjo un error al intentar cargar los datos, volver a intentar.";
                lblMsj.ForeColor = System.Drawing.Color.Red;
                lblMsj.Visible = true;            
            }
        }
        else
        {
            lblMsj.Visible = false;
            lblMsjRepLegal.Visible = false;
        }
    }

    protected void imb_Cerrar_Click(object sender, ImageClickEventArgs e)
    {
        Page.Response.Redirect("../../Principal.aspx");
    }

    private void Inicializar_Datos()
    {     
        // Verificar si la Sociedad está en estado <Pendiente> para registrar el legajo.
        Soa_Sociedad beSoa = new Soa_Sociedad();

        beSoa = (Soa_Sociedad)blSociedad.Buscar_Sociedad(Session[Constantes.session_CodUniOrg].ToString());

            soa_SolicitudInscripcion beSolIns = new soa_SolicitudInscripcion();
            beSolIns = blSolicitudIns.Buscar_SolicitudInscripcion(beSoa.csoc_RUC);

            // Verificar si existe un Registro Emitido o Por Subsanar para mostrar datos
            beReg = blSociedad.Buscar_UltimoRegistroPendiente(Session[Constantes.session_CodUniOrg.ToString()].ToString());

            // Datos Encabezado de Solicitud
            this.txtCodSociedad.Text = Session[Constantes.session_CodUniOrg.ToString()].ToString();
            this.txtRUCSociedad.Text = beSolIns.csin_RUC;
            this.txtDescSociedad.Text = Session[Constantes.session_NomUniOrg].ToString();
            // Datos Tab01
            Activar_Controles(1, false);
            Modo_Consulta(1, true);
            Iniciar_Tab(1);
            if (beReg != null)
            {
                hdfNroReg.Value = beReg.csoc_nroreg.ToString();
                CargarDatos_Tab(1);
            }
            // Datos Tab02
            Activar_Controles(2, false);
            Modo_Consulta(2, true);
            Iniciar_Tab(2);
            if (beReg != null)
            {
                CargarDatos_Tab(2);
            }
            // Datos Tab03
            Activar_Controles(3, false);
            Modo_Consulta(3, true);
            Iniciar_Tab(3);
            if (beReg != null)
            {
                CargarDatos_Tab(3);
            }

            if (beReg != null)
            {
                if (hdfEstado.Value != "2201")
                {
                    Modo_Enviado(true);

                    if ((hdfEstado.Value != "2207") || (hdfEstado.Value != "2208"))
                    {
                        lblMsj.Text = "El registro del legajo de la Sociedad se encuentra en proceso de evaluación.";
                        lblMsj.ForeColor = System.Drawing.Color.Green;
                        lblMsj.Visible = true;
                    }
                    if ((hdfEstado.Value == "2207"))
                    {
                        lblMsj.Text = "Registro de legajo Aprobado.";
                        lblMsj.ForeColor = System.Drawing.Color.Green;
                        lblMsj.Visible = true;
                    }
                    if ((hdfEstado.Value == "2208"))
                    {
                        lblMsj.Text = "Registro de legajo Denegado.";
                        lblMsj.ForeColor = System.Drawing.Color.Red;
                        lblMsj.Visible = true;
                    }
                }
            }
    }

    private void CargarDatos_Tab(int pTab)
    {
        switch (pTab)
        {
            // Estado de Datos Generales
            case 1:
                this.ddlTipoDireccion.Text = beReg.cprm_TipDomicilio;
                this.txtDireccion.Text = beReg.csoc_Domicilio;
                this.ddlDepartamento.Text = beReg.cdep_CodDom;
                ddlDepartamento_SelectedIndexChanged(new Object(), new EventArgs());
                this.ddlProvincia.Text = beReg.cpro_CodDom;
                ddlProvincia_SelectedIndexChanged(new Object(), new EventArgs());
                this.ddlDistrito.Text = beReg.cdis_CodDom;
                this.ddlDepartamentoCons.Text = beReg.cdep_CodCons;
                ddlDepartamentoCons_SelectedIndexChanged(new Object(), new EventArgs());
                this.ddlProvinciaCons.Text = beReg.cpro_CodCons;
                this.txtCapitalSocial.Text = beReg.nsoc_MonCapitalInicial.ToString();
                this.txtNroFicha.Text = beReg.csoc_NumFicha;
                this.txtFecIns.Text =  DateTime.Now.ToShortDateString();   //beReg.dsoc_FecInscripcion.ToString();
                this.txtFecIniOpe.Text = DateTime.Now.ToShortDateString();  // beReg.dsoc_FecIniOperacion.ToString();
                this.txtEmail.Text = beReg.csoc_Email;
                this.txtPaginaWeb.Text = beReg.csoc_PaginaWeb;
                this.txtTelefono.Text = beReg.csoc_Telefonos;
                this.txtFax.Text = beReg.csoc_Fax;
                this.txtAutovaluo.Text = beReg.nsoc_MonAutovaluo.ToString();
                hdfEstado.Value = beReg.cprm_Estado;
                break;
            case 2:
                grvListaRepLegal.DataSource = blSociedad.Listar_RepresentantesSociedad(Session[Constantes.session_CodUniOrg].ToString(), Convert.ToInt16(hdfNroReg.Value));
                grvListaRepLegal.DataBind();
                break;
            case 3:
                grvListaExp.DataSource = blSociedad.Listar_ExperienciaSociedad(Session[Constantes.session_CodUniOrg].ToString(), Convert.ToInt16(hdfNroReg.Value));
                grvListaExp.DataBind();
                break;
        }
    }

    private void Activar_Controles(int pOpcion, Boolean pEstado)
    {
        switch (pOpcion){
            // Estado de Datos Generales
            case 1 :
                this.ddlTipoDireccion.Enabled = pEstado;
                this.txtDireccion.Enabled = pEstado;
                this.ddlDepartamentoCons.Enabled = pEstado;
                this.ddlProvinciaCons.Enabled = pEstado;
                this.ddlDepartamento.Enabled = pEstado;
                this.ddlProvincia.Enabled = pEstado;
                this.ddlDistrito.Enabled = pEstado;
                this.txtCapitalSocial.Enabled = pEstado;
                this.txtNroFicha.Enabled = pEstado;
                this.txtFecIns.Enabled = pEstado;
                this.txtFecIniOpe.Enabled = pEstado;
                this.txtEmail.Enabled = pEstado;
                this.txtPaginaWeb.Enabled = pEstado;
                this.txtTelefono.Enabled = pEstado;
                this.txtFax.Enabled = pEstado;
                this.txtAutovaluo.Enabled = pEstado;
                break;
            case 2 :
                this.ddlTipDoc.Enabled = pEstado;
                this.txtNroDoc.Enabled = pEstado;
                this.txtRUCRepLegal.Enabled = pEstado;
                this.txtApePat.Enabled = pEstado;
                this.txtApeMat.Enabled = pEstado;
                this.txtNombres.Enabled = pEstado;
                this.rblTipRepresen.Enabled = pEstado;
                this.imbBuscarDNI.Visible  = pEstado;
                break;
            case 3:
                this.ddlSector.Enabled = pEstado;
                this.ddlConvenio.Enabled = pEstado;
                this.txtNroConvenio.Enabled = pEstado;
                this.txtEntidad.Enabled = pEstado;
                this.txtRUCEntidad.Enabled = pEstado;
                this.ddlSeccion.Enabled = pEstado;
                this.ddlTipAud.Enabled = pEstado;
                this.txtFIAlcance.Enabled = pEstado;
                this.txtFFAlcance.Enabled = pEstado;
                this.txtFIEjecucion.Enabled = pEstado;
                this.txtFFEjecucion.Enabled = pEstado;
                this.txtFecDictamen.Enabled = pEstado;
                this.txtHH.Enabled = pEstado;
                this.ddlTipMonRetribucion.Enabled = pEstado;
                this.txtMonRetribucion.Enabled = pEstado;
                break;
        }
    }

    // Activar botones de comando en modo Editar o Consulta
    // pModoConsulta: [false] Editar [true] Consulta
    private void Modo_Consulta(int pOpcion, Boolean pModoConsulta) 
    {
        switch (pOpcion){
            // Panel Datos Generales
            case 1 :
                this.imbModificar_DatGen.Visible = pModoConsulta;
                this.imbGuardar_DatGen.Visible = !pModoConsulta;
                this.imbCancelar_DatGen1.Visible = !pModoConsulta;
                break;
            // Panel Representante Legal
            case 2 :
                imbNuevo_RepLeg.Visible = pModoConsulta;
                imbModificar_RepLeg.Visible = pModoConsulta;
                imbGuardar_RepLeg.Visible = !pModoConsulta;
                imbCancelar_RepLeg.Visible = !pModoConsulta;
                break;
            // Panel Experiencia
            case 3:
                imbNuevo_Exp.Visible = pModoConsulta;
                imbModificar_Exp.Visible = pModoConsulta;
                imbGuardar_Exp.Visible = !pModoConsulta;
                imbCancelar_Exp.Visible = !pModoConsulta;
                break;
        }
    }

    private void Modo_Enviado(Boolean pModoConsulta)
    {
        imbModificar_DatGen.Visible = !pModoConsulta;
        imbGuardar_DatGen.Visible = !pModoConsulta;
        imbCancelar_DatGen1.Visible = !pModoConsulta;

        imbNuevo_RepLeg.Visible = !pModoConsulta;
        imbModificar_RepLeg.Visible = !pModoConsulta;
        imbGuardar_RepLeg.Visible = !pModoConsulta;
        imbCancelar_RepLeg.Visible = !pModoConsulta;

        imbNuevo_Exp.Visible = !pModoConsulta;
        imbModificar_Exp.Visible = !pModoConsulta;
        imbGuardar_Exp.Visible = !pModoConsulta;
        imbCancelar_Exp.Visible = !pModoConsulta;

        imb_Enviar.Visible = !pModoConsulta;
    }

    private void Iniciar_Tab(int pTab)
    {
        switch (pTab)
        {
            // Panel Datos Generales
            case 1:
                // Cargar Departamento de domicilio Legal
                List<Ubi_Departamento> lstDept = new List<Ubi_Departamento>();
                Ubi_Departamento Dept = new Ubi_Departamento();
                Dept.cdep_Codigo = "0";
                Dept.cdep_Nombre = "<Seleccionar>";
                lstDept = blUbigeo.Listar_Departamentos();
                List<Ubi_Departamento> lstDeptNew = new List<Ubi_Departamento>();
                lstDeptNew.Add(Dept);
                for (int i = 1; i <= lstDept.Count(); i++)
                {
                    lstDeptNew.Add(lstDept[i-1]);
                }
                ddlDepartamento.DataSource = lstDeptNew;
                ddlDepartamento.DataTextField = "cdep_Nombre";
                ddlDepartamento.DataValueField = "cdep_Codigo";
                ddlDepartamento.DataBind();

                // Cargar Departamento de Constitución de Empresa
                lstDept = new List<Ubi_Departamento>();
                Dept = new Ubi_Departamento();
                Dept.cdep_Codigo = "0";
                Dept.cdep_Nombre = "<Seleccionar>";
                lstDept = blUbigeo.Listar_Departamentos();
                lstDeptNew = new List<Ubi_Departamento>();
                lstDeptNew.Add(Dept);
                for (int i = 1; i <= lstDept.Count(); i++)
                {
                    lstDeptNew.Add(lstDept[i-1]);
                }
                ddlDepartamentoCons.DataSource = lstDeptNew;
                ddlDepartamentoCons.DataTextField = "cdep_Nombre";
                ddlDepartamentoCons.DataValueField = "cdep_Codigo";
                ddlDepartamentoCons.DataBind();

                // Cargar Tipo de Dirección
                List<Soa_Parametros> lstParam = new List<Soa_Parametros>();
                Soa_Parametros param = new Soa_Parametros();
                param.cprm_Codigo = "0";
                param.cprm_Descripcion = "<Seleccionar>";
                lstParam = blParam.Listar_Parametros("01");
                List<Soa_Parametros> lstParamNew = new List<Soa_Parametros>();
                lstParamNew.Add(param);
                for (int i = 1; i <= lstParam.Count(); i++)
                {
                    lstParamNew.Add(lstParam[i - 1]);
                }
                ddlTipoDireccion.DataSource = lstParamNew;
                ddlTipoDireccion.DataTextField = "cprm_Descripcion";
                ddlTipoDireccion.DataValueField = "cprm_Codigo";
                ddlTipoDireccion.DataBind();

                this.txtAutovaluo.Text = "0";
                this.txtCapitalSocial.Text = "0";
                
                //List<Ubi_Departamento> lstDeptOtr = new List<Ubi_Departamento>();
                //lstDeptOtr = blUbigeo.Listar_Departamentos();
                ////List<Object> obj = new List<Object>();
                //Object obj1 = (from item in lstDeptOtr select item as object).ToList();
                //List<Object> objectList = lstDeptOtr.ConvertAll(item => (object)item);
                //lstDeptOtr = util.Cargar_ComboBox(lstDeptOtr, "cdep_Nombre", "cdep_Codigo");

                break;      
            case 2:
                // Cargar Tipo de Documento
                List<Soa_Parametros> lstParam1 = new List<Soa_Parametros>();
                Soa_Parametros param1 = new Soa_Parametros();
                param1.cprm_Codigo = "0";
                param1.cprm_Descripcion = "<Seleccionar>";
                lstParam1 = blParam.Listar_Parametros("02");
                List<Soa_Parametros> lstParamNew1 = new List<Soa_Parametros>();
                lstParamNew1.Add(param1);
                for (int i = 1; i <= lstParam1.Count(); i++)
                {
                    lstParamNew1.Add(lstParam1[i - 1]);
                }
                ddlTipDoc.DataSource = lstParamNew1;
                ddlTipDoc.DataTextField = "cprm_Abrevia";
                ddlTipDoc.DataValueField = "cprm_Codigo";
                ddlTipDoc.DataBind();
                break;
        }         
    }

    protected void imbModificar_DatGen_Click(object sender, ImageClickEventArgs e)
    {
        Activar_Controles(1, true);
        Modo_Consulta(1, false);
    }

    protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        
        List<Ubi_Provincia> lstProv = new List<Ubi_Provincia>();
        Ubi_Provincia prov = new Ubi_Provincia();
        prov.cpro_Codigo = "0";
        prov.cpro_Nombre = "<Seleccionar>";
        lstProv = blUbigeo.Listar_Provincias(ddlDepartamento.SelectedValue.ToString());
        List<Ubi_Provincia> lstNew = new List<Ubi_Provincia>();
        lstNew.Add(prov);
        for (int i = 1; i <= lstProv.Count(); i++)
        {
            lstNew.Add(lstProv[i - 1]);
        }
        ddlProvincia.DataSource = lstNew;
        ddlProvincia.DataTextField = "cpro_Nombre";
        ddlProvincia.DataValueField = "cpro_Codigo";
        ddlProvincia.DataBind();

        ddlDistrito.DataSource = null;
        ddlDistrito.DataBind();
    }

    protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<Ubi_Distrito> lstDist = new List<Ubi_Distrito>();
        Ubi_Distrito dist = new Ubi_Distrito();
        dist.cdis_Codigo = "0";
        dist.cdis_Nombre = "<Seleccionar>";
        lstDist = blUbigeo.Listar_Distritos(ddlProvincia.SelectedValue.ToString(), ddlDepartamento.SelectedValue.ToString());
        List<Ubi_Distrito> lstNew = new List<Ubi_Distrito>();
        lstNew.Add(dist);
        for (int i = 1; i <= lstDist.Count(); i++)
        {
            lstNew.Add(lstDist[i - 1]);
        }
        ddlDistrito.DataSource = lstNew;
        ddlDistrito.DataTextField = "cdis_Nombre";
        ddlDistrito.DataValueField = "cdis_Codigo";
        ddlDistrito.DataBind();
    }

    protected void ddlDepartamentoCons_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<Ubi_Provincia> lstProv = new List<Ubi_Provincia>();
        Ubi_Provincia prov = new Ubi_Provincia();
        prov.cpro_Codigo = "0";
        prov.cpro_Nombre = "<Seleccionar>";
        lstProv = blUbigeo.Listar_Provincias(ddlDepartamento.SelectedValue.ToString());
        List<Ubi_Provincia> lstNew = new List<Ubi_Provincia>();
        lstNew.Add(prov);
        for (int i = 1; i <= lstProv.Count(); i++)
        {
            lstNew.Add(lstProv[i - 1]);
        }
        ddlProvinciaCons.DataSource = lstNew;
        ddlProvinciaCons.DataTextField = "cpro_Nombre";
        ddlProvinciaCons.DataValueField = "cpro_Codigo";
        ddlProvinciaCons.DataBind();
    }

    protected void SelectValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = (!args.Value.Equals("0"));
    }

    protected void imbNuevo_RepLeg_Click(object sender, ImageClickEventArgs e)
    {
        if (!String.IsNullOrEmpty(hdfNroReg.Value))
        {
            hdfCodRepresentante.Value = "";
            Activar_Controles(2, true);
            Modo_Consulta(2, false);
        }
        else
        {
            lblMsj.Text = "Primero debe de registrar la información de datos generales de la Sociedad.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;
        }
    }

    protected void imbConfirmarCancelar_Click(object sender, ImageClickEventArgs e)
    {
        modalPopup3.Show();
    }

    protected void imbConfirmarGuarcar_Click(object sender, ImageClickEventArgs e)
    {        
        try
        {
            if (tabSociedad.ActiveTab == TabDatGeneral)
            {
                if (UpdatePanel1.Page.IsValid)
                {
                    lblMsjConfirm2.Text = "¿Seguro de guardar los datos generales de la Sociedad?";
                    modalPopup2.Show();
                    UpdatePanel2.Update();
                }
            }        
            if (tabSociedad.ActiveTab == TabRepLegal)
            {
                String msjVal = String.Empty;
                msjVal = Validar_DatosRepresenteLegal();
                if (String.IsNullOrEmpty(msjVal))  // Validación exitosa, confirmar para guardar
                {
                    lblMsjConfirm2.Text = "¿Seguro de guardar los datos del Representante Legal?";
                    modalPopup2.Show();
                    UpdatePanel2.Update();
                }
                else
                {
                    lblMsjRepLegal.Text = msjVal;
                    lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
                    lblMsjRepLegal.Visible = true;
                }
            }
        }
        catch (Exception ex)
        {
            lblMsjRepLegal.Text = "Se produjo un error al intentar guardar los datos del representante legal, volver a intentar.";
            lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
            lblMsjRepLegal.Visible = true;
        }
    }

    private String Validar_DatosRepresenteLegal()
    {
        String msj = "";
        if (String.IsNullOrEmpty(ddlTipDoc.SelectedValue) || ddlTipDoc.SelectedValue.Equals("0"))
        {
            msj = "Seleccione el tipo de documento.";
        }
        if (ddlTipDoc.SelectedValue.Equals("0201")) // DNI
        {
            if (txtNroDoc.Text.Length != 8) 
            {
                msj = "El número de DNI es inválido, debe contener 8 dígitos.";
            }
        }
        if (ddlTipDoc.SelectedValue.Equals("0202")) // CE
        {
            if (txtNroDoc.Text.Length != 11)
            {
                msj = "El número de CE es inválido, debe de contener 11 caracteres.";
            }
            if (String.IsNullOrEmpty(txtNombres.Text)) {
                msj = "Ingrese el/los nombres del presenentante legal.";
            }
            if (String.IsNullOrEmpty(txtApeMat.Text) || String.IsNullOrEmpty(txtApePat.Text))
            {
                msj = "Ingrese el apellido paterno y/o materno del represente legal.";
            }
        }
        if ((txtRUCRepLegal.Text.Length != 11) && (txtRUCRepLegal.Text.Length > 0))
        {
            msj = "El número de RUC es inválido, debe contener 11 dígitos.";
        }
        return msj;
    }
    protected void ddlTipDoc_SelectedIndexChanged(object sender, EventArgs e)
    {
        txtApeMat.Text = String.Empty;
        txtApePat.Text = String.Empty;
        txtNombres.Text = String.Empty;
        if (ddlTipDoc.SelectedValue.Equals("0201"))
        {
            txtApeMat.Enabled = false;
            txtApePat.Enabled = false;
            txtNombres.Enabled = false;
            imbBuscarDNI.Visible = true;
        }
        else
        {
            txtApeMat.Enabled = true;
            txtApePat.Enabled = true;
            txtNombres.Enabled = true;
            imbBuscarDNI.Visible = false;
        }
    }
    protected void imbBuscarDNI_Click(object sender, ImageClickEventArgs e)
    {
        if (txtNroDoc.Text.Length != 8)
        {
            lblMsjRepLegal.Text = "El número de DNI es inválido, debe contener 8 dígitos.";
            lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
            lblMsjRepLegal.Visible = true;
        }
        else
        {
            txtNombres.Text = "ALFREDO";
            txtApePat.Text = "BRYCE";
            txtApeMat.Text = "ECHENIQUE";
        }
    }

    protected void imbOK2_Click(object sender, ImageClickEventArgs e)
    {
        modalPopup2.Hide();
        try
        {
            if (tabSociedad.ActiveTab == TabDatGeneral)
            {
                Soa_Sociedad_Registro beSoaReg = new Soa_Sociedad_Registro();
                beSoaReg.cdep_CodCons = ddlDepartamentoCons.SelectedValue;
                beSoaReg.cdep_CodDom = ddlDepartamento.SelectedValue;
                beSoaReg.cdis_CodDom = ddlDistrito.SelectedValue;
                beSoaReg.cprm_Estado = "2201";
                beSoaReg.cprm_TipDomicilio = ddlTipoDireccion.SelectedValue;
                beSoaReg.cpro_CodCons = ddlProvinciaCons.SelectedValue;
                beSoaReg.cpro_CodDom = ddlProvincia.SelectedValue;
                beSoaReg.csoc_codigo = txtCodSociedad.Text;
                beSoaReg.csoc_Domicilio = txtDireccion.Text;
                beSoaReg.csoc_Email = txtEmail.Text;
                beSoaReg.csoc_Fax = txtFax.Text;
                beSoaReg.csoc_NumFicha = txtNroFicha.Text;
                beSoaReg.csoc_PaginaWeb = txtPaginaWeb.Text;
                beSoaReg.csoc_Telefonos = txtTelefono.Text;
                beSoaReg.csoc_usucre = Session[Constantes.session_CodUsuario].ToString();
                beSoaReg.csoc_usumod = Session[Constantes.session_CodUsuario].ToString();
                beSoaReg.dsoc_FecIniOperacion = DateTime.Now;
                beSoaReg.dsoc_FecInscripcion = DateTime.Now;
                if (String.IsNullOrEmpty(hdfNroReg.Value)) beSoaReg.csoc_nroreg = 0; else beSoaReg.csoc_nroreg = Convert.ToInt16(hdfNroReg.Value);

                String[] cRpta = null;
                if (String.IsNullOrEmpty(hdfNroReg.Value))
                {
                    cRpta = blSociedad.Insertar_SociedadRegistro(beSoaReg).Split('@');
                }
                else
                {
                    cRpta = blSociedad.Actualizar_SociedadRegistro(beSoaReg).Split('@');
                }

                if (cRpta[0].Equals("1"))
                {
                    lblMsj.Text = "Se guardo los datos satisfactoriamente.";
                    lblMsj.ForeColor = System.Drawing.Color.Green;
                    lblMsj.Visible = true;

                    if (String.IsNullOrEmpty(hdfNroReg.Value)) { hdfNroReg.Value = cRpta[1]; }
                    Activar_Controles(1, false);
                    Modo_Consulta(1, true);

                }
                else
                {
                    lblMsj.Text = cRpta[1];
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;
                }

            }
            if (tabSociedad.ActiveTab == TabRepLegal)
            {

                String cRpta;
                Soa_Representante_Sociedad beRepSOA = new Soa_Representante_Sociedad();
                beRepSOA.csoc_codigo = txtCodSociedad.Text;
                beRepSOA.csoc_nroreg = Convert.ToInt16(hdfNroReg.Value);
                beRepSOA.cprm_TipRepres = "030" + (rblTipRepresen.SelectedIndex + 1).ToString();
                beRepSOA.cprm_TipDocum = ddlTipDoc.SelectedValue;
                beRepSOA.crep_NumDocum = txtNroDoc.Text;
                beRepSOA.crep_Nombres = txtNombres.Text;
                beRepSOA.crep_RUC = txtRUCRepLegal.Text;
                beRepSOA.crep_ApePaterno = txtApePat.Text;
                beRepSOA.crep_ApeMaterno = txtApeMat.Text;
                beRepSOA.crep_UsuCre = Session[Constantes.session_CodUsuario].ToString();
                beRepSOA.crep_Codigo = hdfCodRepresentante.Value;
                if (String.IsNullOrEmpty(hdfCodRepresentante.Value))  // Nuevo
                {
                    cRpta = blSociedad.Insertar_SociedadRepLegal(beRepSOA);
                }
                else // Actualizar
                {
                    cRpta = blSociedad.Actualizar_SociedadRepLega(beRepSOA);
                }
                String[] msjRpta = cRpta.Split('@');
                if (msjRpta[0].Equals("1")) // Se guardó exitosamente
                {
                    CargarDatos_Tab(2);
                    Activar_Controles(2, false);
                    Modo_Consulta(2, true);
                    lblMsjRepLegal.Text = "Se guardó los datos exitosamente.";
                    lblMsjRepLegal.ForeColor = System.Drawing.Color.Green;
                    lblMsjRepLegal.Visible = true;
                }
                else  // Generó excepción al guardar
                {
                    if (String.IsNullOrEmpty(msjRpta[1]))
                        lblMsjRepLegal.Text = "Se produjo un error al guardar los datos del representante legal, volver a intentar.";
                    else
                        lblMsjRepLegal.Text = msjRpta[1];
                    lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
                    lblMsjRepLegal.Visible = true;
                }

            }

        }
        catch (Exception ex)
        {
            lblMsjRepLegal.Text = "Se produjo un error al intentar guardar los datos del Representante Legal, volver a intentar.";
            lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
            lblMsjRepLegal.Visible = true;
        }
    }
    protected void imbOK3_Click(object sender, ImageClickEventArgs e)
    {
        if (tabSociedad.ActiveTab == TabDatGeneral)
        {
            Activar_Controles(1, false);
            Modo_Consulta(1, true);
        }
        if (tabSociedad.ActiveTab == TabRepLegal)
        {
            Activar_Controles(2, false);
            Modo_Consulta(2, true);
        }
    }

    protected void imb_Enviar_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            String cRptaVal = ValidarEnvio();
            if (String.IsNullOrEmpty(cRptaVal))
            {
                modalPopupEnviar.Show();
            }
            else
            {
                lblMsjRepLegal.Text = cRptaVal;
                lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
                lblMsjRepLegal.Visible = true;
            }
        }
        catch (Exception ex)
        {
            lblMsjRepLegal.Text = "Se produjo un error al intentar confirmar el envio del registro de legajo, volver a intentar.";
            lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
            lblMsjRepLegal.Visible = true;
        }
    }

    private String ValidarEnvio()
    {
        if (String.IsNullOrEmpty(hdfNroReg.Value))
        {
            return "Debe de registrar y guardar los datos de la Sociedad antes de proceder a enviar.";
        }
        return "";
    }

    // Método Enviar Documento
    protected void imbOK5_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            beDocWF.ctdo_Codigo = Constantes.wfTipDoc_RegistroLegajo;
            beDocWF.cedo_CodDoc = txtCodSociedad.Text+"-"+hdfNroReg.Value;
            beDocWF.cprm_EnviaTipUO = Session[Constantes.session_CodTipUO].ToString();
            beDocWF.cent_EnviaUO = Session[Constantes.session_CodUniOrg].ToString();
            beDocWF.usr_EnviaUser = Session[Constantes.session_CodUsuario].ToString();
            beDocWF.csdo_Comentario = "Inicio Flujo de Documento";
            beDocWF.cprm_Estado = "2202";

            String[] cRpta = blDocWF.Registrar_DocumentoWF(beDocWF, 'I').Split('@');
            if (cRpta[0] == "1")
            {
                Modo_Enviado(true);
                lblMsj.Text = "El registro de legajo de la Sociedad ha sido derivado con éxito.";
                lblMsj.ForeColor = System.Drawing.Color.Green;
                lblMsj.Visible = true;
            }
            else
            {
                if (String.IsNullOrEmpty(cRpta[1]))
                {
                    lblMsj.Text = "Se produjo un error inesperado, cierre la ventana y vuelva a intentar enviar.";
                    lblMsj.ForeColor = System.Drawing.Color.Blue;
                    lblMsj.Visible = true;
                }
                else
                {
                    lblMsj.Text = cRpta[1];
                    lblMsj.ForeColor = System.Drawing.Color.Blue;
                    lblMsj.Visible = true;
                }
            }
        }
        catch (Exception ex)
        {
            lblMsjRepLegal.Text = "Se produjo un error al intentar enviar el registro de legajo, volver a intentar.";
            lblMsjRepLegal.ForeColor = System.Drawing.Color.Red;
            lblMsjRepLegal.Visible = true;
        }
    }

    protected void imbBuscar_Entidad_Click(object sender, ImageClickEventArgs e)
    {
        string OpenWindow = "window.showModalDialog('../General/ConsultarEntidad.aspx','Buscar Entidad','dialogWidth:640px;dialogHeight:505px;resizable:no')";
        ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "Buscar Entidad", OpenWindow, true);
    }
}